
   R o c k N E S
   NES 8-bit videogame emulator
   NSF chiptune player
   --------------------------------
   1998-2021 Zepper
   Version 5.65, March 11th 2021
   --------------------------------
   CONTACT ME!
   - Website: http://rocknes.web.fc2.com
   - e-mail: fx3rnes@hotmail.com
   - ICQ: 12292568
   --------------------------------

   +--------------+
   | TERMS OF USE | last update on september 2nd 2020
   +--------------+----------------------------------

          RockNES is free software. It can be distributed freely, provided that no
   changes were done in the original package. Be aware that most popular NES games
   are still copyrighted with all rights reserved. In most cases, distributing ROM
   images of such games infringes copyright. Please, do NOT distribute the RockNES
   software along with infringing ROMs.

   * No warranty, use it at your own risk.
   * The official package contains only the following files:

     RockNES.exe - NES emulator.
     rocknes.txt - This document.
     oldnews.txt - Log of updates.
     ines.txt    - NES file header format supported by this emulator.

   * IF YOU DISAGREE, PLEASE, DELETE THIS SOFTWARE NOW.
  [================================================================================]

 What's new for version 5.65 (03/11/2021)
 ----------------------------------------
 - Fixed PPU soft reset.
 - Fixed sprite address clearing again (RC Pro AM II works).

   * Please, read "oldnews.txt" for the full history of updates.
 
 ---------------------------------------------------------------------------
   = KNOWN EMULATION/SOFTWARE ISSUES =

 - The NSF chiptune player runs at 60hz (locked).
 - Sound skipping.
 - There's a small chance of a deadlock while playing NSF files.
 - Triple buffering works in fullscreen only.
 - No support for PAL PPU (50hz).
 - Sprites and background rendering engines need a rewrite.
 - The GUI menus might be graphically glitched (bad screen clearing).
 - Allegro's timer problem, your framerate might stay at 50hz instead of 60hz, so you
 need to use vsync to fix the problem.
 ---------------------------------------------------------------------------

 Table of contents
 
 1. Description
     Supported files and first run.
     NES memory overview.
     Supported features.
     Unemulated hardware/features.
     Wallpapers.

 2. Player controls
     Hotkeys and shortcuts.
     Input devices.

 3. Using the GUI
     Colors.
     Screen size (upscalers) and modes.
     Custom fullscreen.
     Sound settings.
     General settings.
     Restoring default settings.
     Game Genie codes.
     Playing NSF music files.
     Palettes and color styles.
     NES memory dumping.

 4. VS Unisystem and PlayChoice10
 5. Famicom Disk System
 6. The PRG ROM disassembler
 7. CREDITS (no special order)

 [==========================================================================]

 1. Description
 --------------

   * RockNES is an emulator of the NES 8-bit videogame, released in 1985 in North America.
   This software is fully coded in C, using the Allegro library (4.4.x version) for audio,
   video and input devices. The zLib library is used for loading zipped files. 
 
   - Compiled with gcc version 8.2.0 (MinGW.org GCC-8.2.0-5) with Orwell's Dev-C++ interface.
   - Sound output rate at 44100hz. 
   - Default video mode is windowed at 512x480 pixels, 32 bits RGB.
   - Supported input devices: keyboard, USB controllers and mouse.
   - ZIP files are supported, loads the 1st file of the archive.
   - Special characters like , , ,  etc are NOT supported.
   - Command line switches are NOT supported.

   +-------------------------------+
   | Supported files and first run |
   +-------------------------------+

   Once the GUI bar appears, select [Game]->Load ROM.
   The files with the following extensions will be displayed in the list.

   .NES - NES/Famicom games.
   .FDS - Famicom Disk System games.
   .NSF - Chiptune music rips.

   +---------------------+
   | NES memory overview |
   +---------------------+

    CPU  
    $0000-$07FF: system RAM
    $0800-$1FFF: mirrors of $000-$7FF
    $2000-$2007: PPU registers
    $2008-$3FFF: mirrors of $2000-$2007
    $4000-$4017: APU registers, $4014 PPU OAM DMA, and $4016 joypads
    $4018-$5FFF: unassigned or mapper controlled
    $6000-$7FFF: Save RAM, battery data or PRG RAM/ROM
    $8000-$FFFF: PRG ROM banks in 8, 16 or 32k chunks

    PPU
    $0000-$0FFF: low pattern table
    $1000-$1FFF: high pattern table
    $2000-$2FFF: nametables
    $3000-$3E1F: mirrors of $2000-$2FFF
    $3F00-$3F1F: palette indexes
    $3F20-$3FFF: mirrors of $3F00-$3F1F

   +--------------------------------+
   | Supported features [NTSC mode] |
   +--------------------------------+
   - Full emulation of the 6502 CPU (+ unofficial opcodes), APU and PPU.
   - Joypads 1 and 2.
   - Konami's VRCVI sound expansion.
   - VS UniSystem and PlayChoice10 support (requires iNES format).
   - Cartridge battery save support.
   - Famicom Disk System (partial).
   - NSF chiptune music player.
   - Supported mappers: 0,1,2,3,4,5,7,9,10,11,13,15,16,18,19,20,21,22,23,24,25,26,
 32,33,34,40,41,42,43,44,46,48,57,58,64,65,66,67,68,69,70,71,73,75,76,78,79,83,85,
 86,87,88,89,90,91,92,93,94,97,99,101,113,117,118,119,150,151,160,180,184,187,189,
 211,225,226,227,228,229,230,231,232,233,234,235,240,243,246,255.
   - Joypad data logging for replays, also named "movies".
   - Ability to save/load your progress at anytime (savestates).
   - Ability to patch/change any CPU RAM, PRG/CHR ROM data value.
   - User's interface and configuration file.
   - NES sound recording in WAV format.
   - 6502 CPU disassembler.
   - Pseudo stereo sound.
   - Game screen upscalers 240p, 480p, 720p, 960p and 1080p.
   - Game screen aspect ratio: pixel perfect, NTSC square, 4:3 VGA.
   - Screen triple buffering (fullscreen mode).
   - Vertical retrace sync.
   - Motion blur effect.
   - Ability to dump any PPU/CPU memory.
   - Palette viewer.
   - Game Genie codes.
        
   +-------------------------------+
   | Unsupported hardware/features |
   +-------------------------------+
   - PAL emulation (50hz), Famicom, Dendy and other variants.
   - Input devices like Zapper, Power Pad and others.
   - Joypads 3 and 4.
   - VS Dualsystem/Playchoice-10 upper monitor (requires z80 CPU emulation).
   - Sound expansions like MMC5, VRC7, Famicom Disk System or Namcot N109.
   - MMC5 split screen mode used only by the game "Uchuu Keibitai SDF".
   - Emulation rewind.

   +------------+
   | Wallpapers |
   +------------+

   Only BMP files are supported.
   You can configure a wallpaper to be displayed while in fullscreen mode.
   Select [Options]->Video...->Load wallpaper.
                          or ->Remove wallpaper.
 
 [==========================================================================]

 2. Player controls
 ------------------

   +------------------+
   | Default settings |
   +------------------+
    player 1 -> Input device is KEYBOARD.
    player 2 -> No input device assigned.

   [KEYBOARD]
    D-pad  = Keyboard arrows.
    B      = Z key.
    A      = X key.
    SELECT = Tab key.
    START  = Enter key.

   [JOYSTICK SETUP]
    D-pad   = either digital or analogic inputs.
    B       = button 2.
    A       = button 1.
    SELECT  = button 3.
    START   = button 4.

   +---------+
   | Hotkeys |
   +---------+

  <ESC> Swap to GUI/back to the gameplay.
  While in the GUI (menu), the following shotcuts can be used.
     <Ctrl>+X - to quit program.
     <Ctrl>+L - load ROM.
     <Ctrl>+G - Game Genie codes.
     <Ctrl>+P - NES palette viewer.

  <Alt>+<Enter> switches between fullscreen and windowed modes.

  <"> (tilde) - fast forward (if your PC is fast enough for it).
  * NOTICE! It's disabled in triple buffering mode.

  <F1> toggles FPS display.
  <F2> save state.
  <F3> slot select, up to 15 (extensions rs0, rs1, rs2... rs9, rsa, rsb... rsf).
  <F4> restore state.
  
  <F5> soft reset, hold <shift> for hard reset.
  <F6> DiskSystem disk swap (set side B).
  <F7> DiskSystem insert/eject.
  <F8> Insert credits (VS UniSystem only).
  
  <F9> movie recording.
 <F10> movie play.
 <F11> quit to OS.
 <F12> screenshot (PPU output), or +<shift> to snap the entire screen.

  numkey <1>: set screen size to original size (256x240).
  numkey <2>: screen size: 240p, 480p, 720p, 960p and 1080p.
  numkey <3>: aspect ratio: pixel perfect, NTSC or 4:3 VGA.
  numkey <4>: toggle scanlines on/off.
  numkey <5>: color style select, hold <shift> to go backwards.

   +---------------+
   | Input devices |
   +---------------+

    The PC keyboard is the default input device for playing NES games. You can plug-in
  a USB joystick to play, or even a mouse for fun.
    Select [Options]->Input devices.

     disabled..... Not a good idea to disable player 1 though.
     keyboard..... Default setting.
     joystick 1... First joystick setup. Toggle the GUI to detect a hotplug.
     joystick 2... Second joystick setup.
     mouse........ Just for fun.

    About the mouse used as a joypad, please, it's not about moving an arrow freely
 in your NES game, but controlling the game. In the config, you can swap buttons or
 adjust the movement sensibility, in frames. Default is no latency, maximum is 60.
    Joypad keys are mapped as follows.

    B = left click.
    A = right click.
    Select = mouse scroll (wheel between buttons).
    Start = middle buttom (if available). 
    Up/down/left/right = mouse moving.

 [==========================================================================]

 3. Using the GUI
 ----------------

   - The GUI bar appears once you launch the emulator, or press ESC during the gameplay.

           [ |Game|  CPU   Video  Misc  Options  ?  ]
             +-----------------+ 
             | Load ROM        | File select (NES,NSF,FDS,ZIP,GZ).
             | File info       | View header/file info.
             +-----------------+
             | Save state      | Save your progress.
             | Restore state   | Restore your progress.
             +-----------------+
             | Take screenshot | Screenshot saved as bitmap (BMP).
             | Sound recorder  | WAV files.
             | Quit            | Closes the program.
             +-----------------+


           [  Game  |CPU|  Video  Misc  Options  ?  ]
                    +------------------+
                    | Reset            | Soft reset.
                    | Hard reset       | Hard reset, power off->on.
                    +------------------+
                    | PRG disassembler | PRG ROM disassembler and CPU state.
                    | Set address      | An alternate interface.
                    +------------------+
                    | View CPU state   | Registers and banks.
                    | Memory dump... > +-------------+
                    +------------------| RAM         |  (*.ram) NES RAM memory $0000-$07FF.
                                       | $6000-$7FFF |  (*.wrm) Usually PRG RAM or backed battery data.
                                       | $8000-$FFFF |  (*.p8f) PRG ROM data.
                                       +-------------+
                                       | PRG ROM     |  (*.rom) PRoGram ROM data (cartridge).
                                       | CHR ROM     |  (*.chr) CHaRacter ROM data (cartridge).
                                       +-------------+
                                       | CHR RAM     |  (*.ppu) Character RAM data (PPU).
                                       +-------------+
                                       | Palette RAM |  (*.plt) Color look-up table $3F00-$3F1F, 32 bytes long.
                                       | Nametables  |  (*.nam) Tiles and color attributes, 4 x $400 bytes.
                                       | Sprites     |  (*.oam) Also known as sprite RAM, 256 bytes long.
                                       +-------------+

           [  Game   CPU  |Video| Misc  Options  ?  ]
                          +------------------------+
                          | Screen size            | Select the screen size (blitter).
                          | Set resolution         | Select a custom fullscreen/windowed size.
                          | Use desktop resolution | Use the current desktop resolution for fullscreen.
                          +------------------------+
                          | Buffering method       | Selects triple or double buffering.
                          | Load wallpaper         | Selects a wallpaper file (.BMP) to be used in background.
                          +------------------------+
                          | Remove wallpaper       | Removes the current wallpaper.
                          +------------------------+

           [  Game  CPU  Video |Misc| Options  ?  ]
                               +------------------+
                               | Movies...       >| movie stop, play, status.
                               | Palettes...     >| PAL files and colors.
                               +------------------+
                               | ROM corruption   | Corrupts a portion of memory.
                               | ROM patch        | Modify any PRG ROM data at certain address.
                               | CPU memory patch | Modify any CPU value at certain address.
                               +------------------+
                               | Game Genie codes | You can enter up to 10 GG codes.
                               +------------------+


           [  Game   CPU   Video  Misc |Options| ?  ]
                                       +------------------+
                                       | Input devices    | Input device configuration.
                                       | Turbo speed      | Turbo for buttoms.
                                       | Set directories  | Configure directories.
                                       | Set GUI colors   | Choose different color squemes/config.
                                       +------------------+
                                       | Sound settings   | Sound configuration.
                                       | General settings | A couple of other options.
                                       +------------------+

           [  Game   CPU   Misc   Options | ? |] 
                                          +------------------+ 
                                          | System info      | Video/audio/inputs.
                                          | Video info       | Video context.
                                          | Restore defaults | Restore all the default settings.
                                          +------------------+ 
                                          | About RockNES    | Version info and copyright.
                                          +------------------+ 

   +--------+
   | COLORS |
   +--------+

   Currently, you can select new colors to the GUI menus only. Dialogs cannot be changed for now.

   +------------------------------------------------------+
   |  ( ) black and white            ( ) pink panther     |
   |  ( ) red blood                  ( ) yellow yolk      |
   |  ( ) green tree                 ( ) violet           |
   |  ( ) blue seven                 ( ) saddlebrown      |
   |  ( ) [reverse] black and white  ( ) [reverse] pink   |
   |  ( ) [reverse] red              ( ) [reverse] yellow |
   |  ( ) [reverse] green            ( ) [reverse] violet |
   |  (X) [reverse] blue             ( ) [reverse] brown  |
   |                                                      |
   |  [ ] Set dark grey background [rev].                 |
   |  (X) Use default color for text.                     |
   |  ( ) Use brighter color.                             |
   |  ( ) Use black text.                                 |
   |  ( ) Inverted color for text.                        |
   +------------------------------------------------------|

   * The dark grey background can be enabled in any color mode, but since non-reverse colors use
 white font, well, you'll always get white text. Use it with a reverse color squeme.

   * Brighter color will affect the font color. It's even cooler with a dark background.
   * Black text replaces the default white text in non-reverse color modes.
   * Inverted color works for non-reverse squemes.

   Try other combinations and let me know!
   All these settings are saved to config file RockNES.ini.

   +-------------------------+
   | SCREEN SIZE (UPSCALERS) |
   +-------------------------+

   The original NES PPU has 256x240 pixels, but in most old NTSC TVs, only 256x224 pixels are
 visible. RockNES always display all the scanlines.
   Available upscalers (screen sizes) are:

     0 - ORIGINAL SIZE 240p
     1 - 2x SIZE 480p
     2 - 3x SIZE 720p
     3 - 4x SIZE 960p
     4 - 4.5x SIZE 1080p

 * Press key <2> to cycle between upscalers.
 * Press key <3> to change the aspect ratio: pixel perfect, NTSC squared or 4:3 VGA.
 * Press key <4> for scanlines.

   Triple buffering is another method of blitting the game screen buffer. It requires a full screen
 mode and 3 pages of vram. You can enable it in the config file. Using the GUI requires a restart 
 of the emulator for changes to take effect. Switching back to double buffering (default) still
 requires a restart too.

   +------------------------+
   | CUSTOM FULLSCREEN MODE |
   +------------------------+

        In modern computers/monitors, it's NOT recommended to go under 480p fullscreen, but always 
 matches the desktop resolution.

 1) Go [Options] -> General settings, and check the option "Always use my last video resolution".
 2) Accept the risk and click "Yes" in the message popup.
 3) Go [Options] -> Video -> Set screen resolution. Pick a DirectDraw-driver (usually "accel"),
 then select a resolution on the right column. Click [OK] to setup.

        If OK, RockNES now starts in fullscreen and sets the specified resolution. Remember to check
 the "Always use my last video resolution" in [Options] -> General settings, or your new setting will
 NOT be saved. This option is cleared once you switches into a windowed mode.

   +----------------+
   | SOUND SETTINGS |
   +----------------+

        Go [Misc] -> Sound settings.
        Default settins are checkmarked below.

   [x] Sound output...........: enable/disable sound output.
   [ ] Use stereo mode........: enables a pseudo stereo mode.
   [ ] Use famiclone style....: swaps duty cycles.
   [ ] Use unsigned samples...: no high-pass filtering.
   [ ] Use interpolation......: an easy sound sample interpolation.
   [ ] DMC reversed bits......: improves the playback in a lot of games!

   +------------------+
   | GENERAL SETTINGS |
   +------------------+

        Go [Misc] -> General settings.
        Default settins are checkmarked below.

       OPTION -------------------------------- DESCRIPTION
       ---------------------------------------------------

   [x] Enable KEY TILDE as fast forward......: removes the 60FPS limitation, allowing full speed.
   [ ] Disable dirty header detection........: usually *DISKDUDE* in a corrupted iNES header.
   [x] Ask for confirmation before closing...: a popup ask you about quitting to OS (closes RockNES).
   [ ] Use MMC3 alternate IRQ timing.........: a few mapper 4 games requires this setting for perfection.
   [ ] Use Acclaim's MC-ACC chip (MMC3 IRQ)..: an alternate PPU IRQ system required by a few games.
   [x] Set savestate slot to 0 upon RESET....: the last savestate slot will be zero on RESET.
   [ ] Print FPS value in screenshots........: if you take a screenshot, the FPS will be on top of it.
   [ ] Enable motion blur effect.............: special pixel filtering for blurry trails.
   [ ] Use NTSC alternate palette............: enable a near perfect NTSC palette, less colorful and low brightness.
   [ ] Disable PPU left clipping.............: enable the left 8-pixel column, making it visible (and glitched).
   [x] Use vertical retrace sync.............: use it if the default timer isn't working right.
   [x] Keep the last accessed folder as main.: saves the last accessed folder on ROM loading to config file.
   [ ] Always use my last video resolution...: saves your custom video resolution.
   [ ] Enable mapper 90 nametable control....: it's required by a few mapper 90 games, like a submapper.
   [ ] Skip FDS DiskSystem license screen....: the license text scroll isn't displayed before starting a FDS game.
   [ ] Display % of frames per second........: use percentage instead of FPS (frames per second).

   +------------------+
   | GAME GENIE CODES |
   +------------------+

        Select [Misc] -> Game Genie codes, or press <Ctrl>+G in the GUI.
        Up to 10 codes are supported!

        - Insert a 6 or 8 chars code and click [DECODE].
        - If the address and value are OK, click [ADD].
        - Enable the code at left of the list.
        - Click [CLEAR] to cleanup the decoded stuff.
        - Select a code in the list, click [REMOVE] to delete it.
 
   +----------------------------+
   | PLAYING NSF CHIPTUNE FILES |
   +----------------------------+

        NSF is chiptune music, either from games or created by a sequencer like Famitracker.
        When playing a tune, coloured circles are drawn in the screen.

        +-----------------------------+
        | dark blue..: pulse wave #1  |
        | light blue.: pulse wave #2  |
        | red........: triangle wave  |> NES APU (main)
        | white......: noise wave     |
        | green......: DMC playback   |
        +-----------------------------+
        | dark pink..: VRC6 square #1 |
        | light pink.: VRC6 square #2 |> VRC6 sound (extra channels)
        | orange.....: VRC6 sawtooth  |
        +-----------------------------+

        * Keyboard arrows change tracks.
        * Press <ENTER> to (re)play the current track.
        * Savestates (F2) and fast forward are supported in this mode.
        * There's no way to stop the playback, but halt it by hitting <ESC>.
        * Speed is always at 60Hz, so PAL tunes are not supported.

   +---------------------------+
   | PALETTES AND COLOR SYTLES |
   +---------------------------+
        RockNES uses a RGB palette from the game "Rockman Complete Works" on PlayStation.
 The missing entries were filled up using another palette, provided by Chris Covell. However,
 the default palette is the NTSC by Joel Yliluoma (see Credits section).

        * Loading palette files
        -----------------------
        Palette files must bring 64 RGB triplets (192 bytes long). Color emphasis values are
 auto generated, so there's no need of storing anything else in the file. 
        This file is now loaded at every launch of the emulator. If you want the built-in palette,
 enable it at [Options]->General settings.

        * Color styles
        --------------
        RockNES brings 32 different styles that can be selected by pressing numkey <5>.

     0. Default colors..............: the NES palette.
     1. RGB fix.....................: usually "kills" light cianos, light browns or magenta color tunes.
     2. Game Boy (green #1).........: Game Boy 4 shades of green. Uses the brighness level ANDed with $C0.
     3. Game Boy (green #1 indexed).: Same palette, but uses a color index table.
     4. Game Boy (green #2 multiply): Alternate Game Boy green, but uses multiply blending.
     5. Game Boy (green #3).........: Another GB color set. Uses the brighness level ANDed with $C0.
     6. Game Boy (green #3 indexed).: Same palette, but uses a color index table.
     7. Game Boy (gray).............: Game Boy 4 shades of gray. Uses a color index table.
     8. Black & white...............: 2 colors, with a twist for better viewing.
     9. Black & white (negative)....: Negative B&W.
    10. Red emphasis................: deemphasis green and blue.
    11. Green emphasis..............: deemphasis red and blue.
    12. Blue emphasis...............: deemphasis red and green.
    13. Grayscale...................: monochrome.
    14. Grayscale (alt).............: monochrome with brightness correction.
    15. Grayscale (alt)(neg)........: negative monochrome.
    16. Sepia.......................: reddish-brown color.
    17. Sepia (alt).................: reddish-brown color using a different brightness.
    18. Mushroom....................: shifted colors.
    19. Royal Yellow................: shades of yellow.
    20. Navy Blue (Crayola).........: shades of blue.
    21. Red Spain...................: shades of red.
    22. Green Plant.................: shades of green.
    23. Magenta.....................: shades of magenta.
    24. Olive.......................: a cool green color filtering.
    25. Nocturne....................: blended red and blue.
    26. Sketch......................: high brightness grayscale.
    27. [B-G-R] SET.................: reversed RGB components.
    28. [B-R-G] SET.................: uses blue, red and green order.
    29. [G-R-B] SET.................: uses green, red and blue order.
    30. [G-B-R] SET.................: uses green, blue and red order.
    31. [R-B-G] SET.................: uses red, blue and green order.  

 [==========================================================================]

 4. VS Unisystem and PlayChoice10
 --------------------------------
        Games must be in iNES format. Support is partial, there's no way of auto-ident
 a game in RockNES, even with a flag in the header, it doesn't specify the PPU model and
 the right palette set. So, you must select the proper palette that matches the game.
        Once a game is loaded, select a palette at [Misc] -> Palette.
        Press <F8> for credits. DIP switches are not supported.
        The upper monitor is NOT supported.

        * VS Unisystem
        --------------

 "The Nintendo VS Series was a series of arcade video games designed for two player
 competitive play using the VS. UniSystem or VS. DualSystem, arcade system boards
 based on the Nintendo Entertainment System. Many of these stand-up or sit-down
 arcade machines had two screens and controls joined at an angle. These games were
 arcade ports of home video games for the Nintendo Entertainment System, thus they
 could be sold cheaply to arcades in the late 80s".
                             http://en.wikipedia.org/wiki/Nintendo_Vs._Series/

         * PlayChoice10
         --------------

 "PlayChoice-10 is an arcade machine that can consist of as many as 10 different games
 previously available only on the Nintendo Entertainment System (NES) home console. The
 games for this system are in the modular form of circuit boards that are plugged into
 one of the ten open slots on the PlayChoice-10's motherboard".
                             https://en.wikipedia.org/wiki/PlayChoice-10
 
 [==========================================================================]

 5. Famicom Disk System
 ----------------------

        It's a peripheral for the Nintendo Family Computer console in Japan. It was a
 unit that used proprietary floppy disks called "Disk Cards" for data storage. Currently,
 the disk images were poorly dumped, missing important data.
        The emulation requires the file "disksys.rom" (not included). Once a game is loaded,
 the BIOS initializes the system. When the game title screen appears, you might be prompted 
 to switch the disk side at anytime.
        This driver is emulated as "iNES mapper 20" with partial support. No extra sound
 channels are emulated yet.

        - Press <F7> to eject the disk, then <F6> to change the disk side (A->B).
        - Press <F7> again to reinsert the disk.
        (a message is displayed on screen, don't worry)

 [==========================================================================]

 6. PRG ROM data disassembler
 ----------------------------

	RockNES brings a basic disassembler for the 6502 PRG data. Unfortunately, it's
 barely complete for useful debugging such as breakpoints and memory viewer. 
        Supported features are:

 - 6502 disasembled code viewer (any memory bank/location);
 - CPU registers viewer (current state);
 - Memory dump of CPU or PPU;
 - ROM data corruption (selectable address, block size and filling byte value);
 - ROM data modifier (also known as "patch" of cartridge data);
 - CPU memory modifier (ROM data loaded at any address);
 - Game Genie codes (cheat system).
 
   +-----------------------------+
   | PRG disassembler [Overview] |
   +-----------------------------+

 +------------------------------------+
 |$8000 *A=90, X=05, Y=00, S=FF, P=A5 |  -> CPU registers.
 |PRG ROM bank 08 [$1C000]            |  -> Bank number and cartridge data address.
 |+----------------------------------+| 
 ||8000 78       SEI                 || 
 ||8001 D8       CLD                 ||
 ||8002 A9 10    LDA #$10            || 
 ||8004 8D 00 20 STA $2000           ||
 ||8007 A2 FF    LDX #$FF            ||
 ||8009 9A       TXS                 ||
 ||800A AD 02 20 LDA $2002           ||  [MAIN WINDOW]
 ||800D 10 FB    BPL $800A           ||
 ||800F AD 02 20 LDA $2002           ||
 ||8012 10 FB    BPL $800F           ||
 ||8014 A0 FE    LDY #$FE            ||
 ||8016 A2 05    LDX #$05            ||
 ||8018 BD D7 07 LDA $07D7, X        ||
 ||801B C9 0A    CMP #$0A            ||
 ||801D B0 0C    BCS $802B           ||
 ||801F CA       DEX                 ||
 |+----------------------------------+|
 | CPU ADDRESS SELECT                 |
 |( )$4000 ( )$5000 ( )$6000 ( )$7000 |
 |(o)$8000 ( )$9000 ( )$A000 ( )$B000 |
 |( )$C000 ( )$D000 ( )$E000 ( )$F000 |
 +------------------------------------+

        Example: select $8000, click [Refresh] to display ASM code from CPU $8000-$8FFF.
 Optionally, you can save the ASM code to the disk by clicking [Save].

   +--------------------------+
   | Custom disassembler mode |
   +--------------------------+

        It's much like the previous one, but with a different layout. The PRG bank numbers
 are displayed. Usually, a value of $FF indicates open bus.

 +---------------------------------------------------+
 |+-------------------------------------------------+|
 || Disassembler                                 [X]||
 |+-------------------------------------------------+|
 |                                                   |
 |  Base address:                                    |
 |   8000___ [Refresh] [x]CPU  [ ]ROM     [Save]     |
 |                                                   |
 |+---------------------------------+ +------------+ |
 ||8000 78       SEI                | |PC=$8057    | |
 ||8001 D8       CLD                | | A=$90      | |
 ||8002 A9 10    LDA #$10           | | X=$05      | |
 ||8004 8D 00 20 STA $2000          | | Y=$00      | |
 ||8007 A2 FF    LDX #$FF           | | S=$FF      | |
 ||8009 9A       TXS                | | P=$A5      | |
 ||800A AD 02 20 LDA $2002          | |            | |
 ||800D 10 FB    BPL $800A          | |$6000 = $FF | |
 ||800F AD 02 20 LDA $2002          | |$8000 = $00 | |
 ||8012 10 FB    BPL $800F          | |$A000 = $01 | |
 ||8014 A0 FE    LDY #$FE           | |$C000 = $02 | |
 ||8016 A2 05    LDX #$05           | |$E000 = $03 | |
 ||8018 BD D7 07 LDA $07D7, X       | |            | |
 ||801B C9 0A    CMP #$0A           | |            | |
 ||801D B0 0C    BCS $802B          | |            | |
 ||801F CA       DEX                | |            | |
 |+---------------------------------+ +------------+ |
 +---------------------------------------------------+

   * Select [CPU] to disassemble from CPU space ($0000-$FFFF).
   * Select [PRG] to disassemble from cartridge ROM space.
   * Click [Save] to write the disassembled code into a text file.

 [==========================================================================]

 7. CREDITS
 ----------

 gcc version 8.2.0 (MinGW.org GCC-8.2.0-5)
 Copyright  Free Software Foundation, Inc.

 The Dev-C++ resource site
 http://www.bloodshed.net/dev

 Orwell Dev-C++ - the main site of the 2011 Dev-C++ fork
 http://orwelldevcpp.blogspot.com.br/

 Allegro library, by Shawn Hargreaves
 http://alleg.sourceforge.net/

 Joel Yliluoma
 https://bisqwit.iki.fi/utils/nespalette.php

 unzip.c - IO for uncompress .zip files using zlib
 Copyright  Gilles Vollant

 Quietust
 http://www.qmtpro.com/~nes/nintendulator/

 Marat Fayzullin
 http://fms.komkon.org

 [=========================================================================]
EOF
